package com.foxitcloud.util;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

/**
 * @Description mongo操作辅助类
 * @author xxu
 * @CreateDate 2015年1月12日 下午6:16:06
 */
public class MongoHelper {
    public static Map<String, Object> createUpdateMap(Object object) throws IllegalAccessException,
            IllegalArgumentException, InvocationTargetException, SecurityException {
        Map<String, Object> updateMap = new HashMap<String, Object>();

        if (object != null) {
            Class<?> clz = object.getClass();

            Field[] fields = clz.getDeclaredFields();

            for (Field field : fields) {
                try {
                    Method m = (Method) object.getClass().getMethod("get" + BeanUtil.getMethodName(field.getName()));

                    Object val = m.invoke(object);

                    if (val != null) {
                        updateMap.put(field.getName(), val);
                    }
                } catch (NoSuchMethodException e) {
                }

                // if
                // (field.getGenericType().toString().equals("class java.lang.String"))
                // {
                // Method m = ( Method ) object.getClass().getMethod(
                // "get" + getMethodName( field.getName() ) );
                //
                // String val = (String) m.invoke(object);
                //
                // if(val !=null )
                // {
                // updateMap.put( field.getName(), val );
                // }
                // }
                //
                // if
                // (field.getGenericType().toString().equals("class java.lang.Integer"))
                // {
                // Method m = (Method) object.getClass().getMethod("get"
                // + getMethodName(field.getName()));
                // Integer val = (Integer) m.invoke(object);
                // if (val != null)
                // {
                //
                // }
                // }

            }
        }

        return updateMap;
    }

}
